namespace NGen.Managers.Logging
{
	public interface IManagerLogs
	{
		/// <summary>
		/// 	get or set the logging level for all loggers
		/// </summary>
		LoggingLevel GlobalLoggingLevel { get; set; }

		/// <summary>
		/// 	clears all logfiles
		/// </summary>
		void ClearAllLogs();

		/// <summary>
		/// 	close all logfiles
		/// </summary>
		void Cleanup();

		/// <summary>
		/// 	returns a specific logger, if it does not exist then one is created
		/// </summary>
		/// <typeparam name = "TLoggerType">the type of logType"></typeparam>
		/// <returns></returns>
		ILogger Log<TLoggerType>();

		/// <summary>
		/// 	write a message to a specific logger, if it doesn't not exist then one is created
		/// </summary>
		/// <typeparam name = "TLoggerType">the logger to use</typeparam>
		/// <param name = "p_message">the message to write</param>
		/// <param name = "p_logLevel">the logging level to use</param>
		void Log<TLoggerType>(string p_message, LoggingLevel p_logLevel = LoggingLevel.MINIMAL);
	}
}